﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Model;


namespace Model
{
   public class DataContext : DbContext
    {

        public DataContext()
            : base("TpFinalGrupo2")
        {

        }

        public DbSet<Localidad> localidades { get; set; }
        public DbSet<Empresa> empresas { get; set; }
        public DbSet<Darsena> darsenas { get; set; }
        public DbSet<Usuario> usuarios { get; set; }
                 



        public Boolean agregarLocalidad(Localidad localidad)
        {


           if (buscarLocalidad(localidad.codigo) == null){

                  localidades.Add(localidad);
                  SaveChanges();
                  return true;
                  
           }
           return false;
        }

        public bool agregarEmpresa(Empresa empresa)
        {

            if (buscarEmpresa(empresa.codigo) == null)
            {

                empresas.Add(empresa);
                SaveChanges();
                return true;

            }
            return false;

        }

        public List<ConsultaToques> consultaEmpresa(List<ConsultaToques> consultas, DateTime fecha1, DateTime fecha2)
        {
            var query = from a in darsenas
                        where (a.hora < fecha2 & a.hora > fecha1)
                        orderby a.empresa.codigo ascending
                        select a;

            foreach (Darsena a in query)
            {

                var buscar = consultas.Find(item => item.nombre == a.empresa.nombre);

                if (buscar == null)
                {
                    ConsultaToques consulta = new ConsultaToques();
                    consulta.nombre = a.empresa.nombre;
                    consulta.total = consulta.total + 1;
                    consultas.Add(consulta);

                }
                else
                {
                    buscar.nombre = a.empresa.nombre;
                    buscar.total = buscar.total + 1;
                }
            }
            return consultas;
        }


      


         public Localidad buscarLocalidad(int codigoLocalidad)
        {

            var localidad = (from l in localidades
                        where (l.codigo == codigoLocalidad)
                        select l).FirstOrDefault();

            return localidad;

        }

        public Empresa buscarEmpresa(int codigoEmpresa)
        {

            var empresa = (from e in empresas
                             where (e.codigo == codigoEmpresa)
                             select e).FirstOrDefault();

            return empresa;



        }

       
        public List<Consulta> totalToques(List<Consulta> consultas, DateTime fecha1, DateTime fecha2, int idCodigo)
        {
            
            
            var darsena = from d in darsenas
                           where (d.empresa.codigo == idCodigo & d.hora < fecha2 & d.hora > fecha1)
                           orderby d.localidad.nombre ascending
                             select d;
            
            foreach (Darsena d in darsena)
                {
                    Model.Consulta consulta = new Model.Consulta();
                    consulta.localidad = d.localidad;
                    consulta.nroDarsena = d.nroDarsena;
                    consulta.interno = d.interno;
                    consulta.fecha = d.hora;
                    consultas.Add(consulta);
                    
                }


            return consultas;

        }





        public Usuario buscarUsuario(int id)
        {

            var usuario = (from u in usuarios
                             where (u.id == id)
                             select u).FirstOrDefault();

            return usuario;


        }

     
    }

}
